import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'

Vue.use(Vuex)

// vuex-persistedstate
// - persisted  持久化

// - 下载：yarn add vuex-persistedstate@3.2.1
// - 引入：import createPersistedState from "vuex-persistedstate"
// - 配置：store:{pluugins:[createPersistedState()]}
// - 配置项：
//  - key ：指定持久化的名字，默认的名字是vuex
//  - storage ：选用一种持久化的方案，默认是本地存储
//  - reducer ： 用语指定哪些属性需要持久化，不指定ruducer，默认vuex所有的数据都会被持久化
//

export default new Vuex.Store({
  // 配置vuex的插件的
  plugins: [
    createPersistedState({
      key: 'HEIMA_TOUTIAO',
      // storage：window.sessionStorage
      reducer({ tokenObj, myChannels, histories }) {
        return { tokenObj, myChannels, histories }
      }
    })
  ],
  // state 存储数据
  // mutations
  state: {
    tokenObj: {},
    myChannels: [],
    histories: []
  },
  getters: {
    isLogin(state) {
      return !!state.tokenObj.token
    }
  },
  mutations: {
    SET_TOKEN(state, tokenObj) {
      state.tokenObj = tokenObj
    },
    SET_CHANNELS(state, channels) {
      state.myChannels = channels
    },
    SET_HISTORIES(state, histories) {
      state.histories = histories
    }
  },
  actions: {},
  modules: {}
})
